/*
算法3-4~6 链式栈的3个操作
分数 20
作者 陈越
单位 浙江大学

请编写程序，将 n 个整数顺序压入容量无限制的（链式）栈，随后执行 n+1 次取顶并出栈的操作。
输入格式：

输入首先在第一行给出正整数 n；随后一行给出 n 个 int 范围内的整数，数字间以空格分隔。题目保证有 n 个元素的（链式）栈不会超过题目的空间限制。
输出格式：

将输入的 n 个整数顺序压入栈，随后执行 n+1 次取顶并出栈的操作，输出取出的元素的值，每行一个。
注意：当栈为空时，取顶和出栈操作应该不执行，并在一行中输出错误信息 错误：栈为空。。空栈取顶应返回 -1。
输入样例：

5
1 2 3 4 5

输出样例：

5
4
3
2
1
错误：栈为空。
-1
错误：栈为空。
*/

#include <iostream>
#include "../base/LinkedList.cpp"

using namespace std;

int main() {
    int n;
    cin >> n;
    LinkedStack *stack = init();
    int x;
    for (int i = 0; i < n; ++i) {
        cin >> x;
        push(stack, x);
    }
    for (int i = 0; i <= n; ++i) {
        if (isEmpty(stack)) {
            cout << "错误：栈为空。" << endl;
            cout << top(stack) << endl;
        } else {
            cout << top(stack) << endl;
            pop(stack);
        }
    }
    cout << "错误：栈为空。" << endl;
    return 0;
}